package br.com.swp.campestre.entity;

import java.io.Serializable;
import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Version;

import br.com.swp.campestre.enumeration.StatusLoteFinanceiro;
import br.com.swp.campestre.enumeration.StatusLoteLegal;
import br.com.swp.campestre.enumeration.StatusLoteVenda;


@Entity
@SequenceGenerator(sequenceName="Lote_seq" ,  name="Lote_seq" , allocationSize=1)
public class Lote implements Serializable
{
// seam-gen attributes (you should probably edit these)
    private Long id;
    private int version;
    private Quadra quadra;
    private String codigoLote;
    
    private StatusLoteVenda statusLoteVenda;
    private StatusLoteFinanceiro statusLoteFinanceiro;
    private StatusLoteLegal statusLoteLegal;
    
    private BigDecimal valor;
    private GrupoLote grupoLote;
    private Venda venda;
//    private String comercial;
//    private String financeiro;
    

    // add additional entity attributes

    // seam-gen attribute getters/setters with annotations (you probably should edit)

    public Lote(Lote loteSelecionado) {

	}
    public Lote() {

	}

	@Id @GeneratedValue(strategy=GenerationType.SEQUENCE , generator="Lote_seq")
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Version
    public int getVersion() {
        return version;
    }

    private void setVersion(int version) {
        this.version = version;
    }

	public void setQuadra(Quadra quadra) {
		this.quadra = quadra;
	}
	@ManyToOne
	public Quadra getQuadra() {
		return quadra;
	}

	public void setCodigoLote(String codigoLote) {
		this.codigoLote = codigoLote;
	}

	public String getCodigoLote() {
		return codigoLote;
	}

	public void setValor(BigDecimal valor) {
		this.valor = valor;
	}
	public BigDecimal getValor() {
		return valor;
	}
	public void setGrupoLote(GrupoLote grupoLote) {
		this.grupoLote = grupoLote;
	}
	@ManyToOne
	public GrupoLote getGrupoLote() {
		return grupoLote;
	}

	public void setVenda(Venda venda) {
		this.venda = venda;
	}
	
	@ManyToOne
	public Venda getVenda() {
		return venda;
	}

	@Enumerated(EnumType.STRING)
	public StatusLoteVenda getStatusLoteVenda() {
		return statusLoteVenda;
	}
	public void setStatusLoteVenda(StatusLoteVenda statusLoteVenda) {
		this.statusLoteVenda = statusLoteVenda;
	}
	
	@Enumerated(EnumType.STRING)
	public StatusLoteFinanceiro getStatusLoteFinanceiro() {
		return statusLoteFinanceiro;
	}
	public void setStatusLoteFinanceiro(StatusLoteFinanceiro statusLoteFinanceiro) {
		this.statusLoteFinanceiro = statusLoteFinanceiro;
	}
	
	@Enumerated(EnumType.STRING)
	public StatusLoteLegal getStatusLoteLegal() {
		return statusLoteLegal;
	}
	public void setStatusLoteLegal(StatusLoteLegal statusLoteLegal) {
		this.statusLoteLegal = statusLoteLegal;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (!(obj instanceof Lote)) {
			return false;
		}
		Lote other = (Lote) obj;
		if (id == null) {
			if (other.id != null) {
				return false;
			}
		} else if (!id.equals(other.id)) {
			return false;
		}
		return true;
	}
	

	

}
